import {
  getToken,
  setStorageItem,
  getStorageItem
} from '../../../utils/storage.js';
import {
  addQrCode
} from '../../../api/comment.js';
import {
  showWxToast,
  validateCheckResult
} from '../../../utils/index.js';
import {
  reqSecurityMsgCheck
} from '@/api/system.js'
import {
  getUserProfileInfo,
} from '../../../api/user.js';
import {
  updateCardInfo
} from '../../../api/card.js';
import {
  WEDDING_RITE_APPID
} from '@/assets/constant/default-constant'

const YHADVANS = [
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/work.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/schedule.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/info.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/share.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/contact.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/record.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/getUser.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/hd.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/mp.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/h5.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/tt.png',
  'https://ustatic.hudongmiao.com/joymewAssistant/yuehun/redbook.png',
]

Page({
  data: {
    qrCodeUrl: '',
    cardInfoList: [], // 数组项格式同cardInfo
    card_json: '',
    cardInfo: { //主持人卡片数据
      type: 'hostCard', //类型，死数据
      phone: '',
      rank: '', // 不存在时，不展示用户的具体排名，改为展示金牌主持人
      introduce: '', //主持人简介，为空，则展示 '我是本场互动主持人，有需要联系我'
      switch: '0', // 主持人卡片开关，0为关闭，1为开启；
      yuehunSwitch: '0'
    },
    isShowChangeIntroduce: false,
    newIntroduce: '',
    yuehunAdvantages: YHADVANS,
    vipStatus: '0' // '0' 表示数据未加载出来  '1'表示没有购买服务 '2'表示已购买服务
  },
  onLoad() {
    this.initQrcode();
    this.getUserInfo();
  },
  initQrcode() {
    // 获取用户二维码
    this.setData({
      'qrCodeUrl': getStorageItem('comment_json')
    })
  },
  // 上传二维码
  uploadQR() {
    wx.chooseMedia({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      mediaType: ['image'],
      success: (res) => {
        console.log('选择图片', res);
        const tempFilePaths = res.tempFiles
        const tmpToken = getToken();
        wx.uploadFile({
          filePath: tempFilePaths[0].tempFilePath,
          name: 'file',
          header: {
            'token': tmpToken,
            'Content-Type': 'application/x-www-form-urlencoded'
          },
          url: 'https://www.hudongmiao.com/beiJing/shangchuanTomcat',
          success: (res) => {
            let webidpic = JSON.parse(res.data);
            setStorageItem('comment_json', webidpic.data.filePath)
            this.setData({
              qrCodeUrl: webidpic.data.filePath
            })
            addQrCode(webidpic.data.filePath).then(res => {
                showWxToast('操作成功')
              })
              .catch(err => {
                showWxToast('操作失败')
              })
          }
        })
      }
    })
  },
  // 删除当前用户的二维码
  removeImg() {
    wx.showModal({
      title: '',
      content: '确定要移除二维码吗',
      success: (res) => {

        if (res.confirm) {
          this.setData({
            qrCodeUrl: '',
          })
          setStorageItem('comment_json', '')
          addQrCode('').then(res => {
              showWxToast('操作成功')
            })
            .catch(err => {
              showWxToast('操作失败')
            })
        } else if (res.cancel) {
          showWxToast('已取消')
        }

      }
    })
  },
  //获取用户信息
  async getUserInfo() {
    const {
      data: userInfo
    } = await getUserProfileInfo();
    const {
      yue_switch,
      card_json,
    } = userInfo;
    // vipStatus 赋值
    if (yue_switch && yue_switch === '1') {
      this.setData({
        vipStatus: '2'
      });
    } else {
      this.setData({
        vipStatus: '1'
      });
    }
    // 判断card_json没传的情况
    if (!card_json) {
      this.setData({
        'cardInfo.rank': '',
        'cardInfo.introduce': '我是本场互动主持人，有需要联系我',
        'cardInfo.switch': '0',
        'cardInfo.type': 'hostCard',
        'cardInfo.phone': '',
        'cardInfo.yuehunSwitch': '0',
      })
    } else {
      // 保存card_json
      this.setData({
        'card_json': card_json
      })
      // 1.将card_json字段数据转化为object类型
      const target = JSON.parse(card_json);
      if (target) {
        this.setData({
          'cardInfoList': [...target]
        })
      } else {
        this.setData({
          'cardInfoList': []
        })
      }
      // 2.查找type为'hostCard'类型的卡片信息的索引
      const targetIndex = target.findIndex((item) => {
        if (item.type === 'hostCard') {
          return true;
        }
        return false;
      })
      let cardInfo = null;
      if (target && 0 <= targetIndex && targetIndex < target.length) {
        cardInfo = {
          ...target[targetIndex]
        }
      }
      // 如果有对应卡片信息
      if (cardInfo) {
        this.setData({
          'cardInfo.type': cardInfo.type,
          'cardInfo.introduce': cardInfo.introduce || '我是本场互动主持人，有需要联系我',
          'cardInfo.switch': cardInfo.switch || '0',
          'cardInfo.rank': cardInfo.rank || '',
          'cardInfo.phone': cardInfo.phone || '',
          'cardInfo.yuehunSwitch': cardInfo.yuehunSwitch || '0',
        })
      } else {
        // 没有则使用默认值
        this.setData({
          'cardInfo.type': 'hostCard',
          'cardInfo.introduce': '我是本场互动主持人，有需要联系我',
          'cardInfo.switch': '0',
          'cardInfo.rank': '',
          'cardInfo.phone': '',
          'cardInfo.yuehunSwitch': '0',
        })
      }
    }
    // 处理最终所有卡片数组信息
    this.updateTargetHandler();
  },
  // 处理目标结果的更新
  updateTargetHandler() {
    // 1.查找主持人卡片的索引
    let targetIndex = this.data.cardInfoList.findIndex((item) => {
      if (item.type === "hostCard") {
        return true;
      }
      return false;
    })
    // 判断是否有该卡片的数据
    if (targetIndex >= 0) {
      // 修改当前索引的卡片数据
      this.setData({
        ['cardInfoList[' + targetIndex + ']']: this.data.cardInfo
      })
    } else {
      // 如果没有该卡片信息，则新增
      this.data.cardInfoList.push(this.data.cardInfo);
    }
    // 更新缓存数据
    setStorageItem('cardInfoList', JSON.stringify(this.data.cardInfoList))
  },
  // 更新卡片操作
  async updateCardHandler() {
    let target = '';
    // 更新所有卡片数据
    this.updateTargetHandler();
    // 转化为JSON
    target = JSON.stringify(this.data.cardInfoList);

    if (!target) {
      target = JSON.stringify([]);
    }
    const {
      data: res
    } = await updateCardInfo(target);
    return res
  },
  // 打开修改简介弹窗
  showChangeIntroduce() {
    this.setData({
      'isShowChangeIntroduce': true,
      'newIntroduce': ''
    });
  },
  // 关闭弹窗
  closeDialog() {
    this.setData({
      'isShowChangeIntroduce': false,
      'newIntroduce': '',
    })
  },
  // 修改简介
  async changeIntroduce() {
    // 判断新的个人简介长度是否为0, 如果是则使用默认
    if (this.data.newIntroduce.length === 0) {
      this.setData({
        'cardInfo.introduce': '我是本场互动主持人，有需要联系我'
      })
    } else {
      this.setData({
        'cardInfo.introduce': this.data.newIntroduce
      })
    }
    try {
      const checkRes = await reqSecurityMsgCheck(this.data.newIntroduce);
      if (!validateCheckResult(checkRes.data.data?.msg_sec_check)) {
        throw new Error('内容非法');
      }
      // 调用修改接口
      const res = await this.updateCardHandler();
      if (String(res) === 'success') {
        this.closeDialog()
        wx.showToast({
          title: '修改成功',
          icon: 'none'
        })
      } else {
        wx.showToast({
          icon: 'none',
          title: '修改失败，请稍后重试',
        })
      }
    } catch (err) {
      console.log(err);
      wx.showToast({
        title: '内容非法!',
        icon: 'error'
      })
    }
  },
  // 约婚开关
  async changeYuehunSwitch(e) {
    let target = e.detail.value;
    if (target) {
      // 调用修改操作
      this.setData({
        'cardInfo.yuehunSwitch': '1'
      });
      const res = await this.updateCardHandler();
      if (String(res) === 'success') {
        wx.showToast({
          icon: 'none',
          title: '操作成功',
        });
        return;
      }
    } else {
      this.tipOnCLose(async () => {
        // 调用修改操作
        this.setData({
          'cardInfo.yuehunSwitch': '0'
        });
        const res = await this.updateCardHandler();
        if (String(res) === 'success') {
          wx.showToast({
            icon: 'none',
            title: '操作成功',
          });
          return;
        }
      });
    }
  },
  // 查看案例按钮点击事件的处理函数
  onCheckCaseBtnTap() {
    wx.navigateToMiniProgram({
      appId: WEDDING_RITE_APPID,
      path: `subpkg/wedding-link/my-preview-share?userId=44cb3be78dc94d2bb14269864435d274`, // 打开的页面路径
      extraData: {},
      envVersion: 'release', // trial release
      success(res) {
        console.log(res);
      }
    })
  },
  // 上传更多资料点击事件的处理函数
  onUploadMoreBtnTap() {
    wx.navigateToMiniProgram({
      appId: WEDDING_RITE_APPID,
      path: 'pages/wedding-link/works', // 打开的页面路径
      extraData: {},
      envVersion: 'release', // trial release
      success(res) {
        console.log(res);
      }
    })
  },
  // 查看按钮点击事件的处理函数
  onCheckBtnTap() {
    wx.navigateToMiniProgram({
      appId: WEDDING_RITE_APPID,
      path: 'subpkg/wedding-link/my-preview', // 打开的页面路径
      extraData: {},
      envVersion: 'release', // trial release
      success(res) {
        console.log(res);
      }
    })
  },
  // 关闭提醒
  tipOnCLose(confirmCallbackFunc) {
    // 弹出提示
    wx.showModal({
      content: '关闭展示开关后，现场来宾将看不到您的任何信息，是否关闭按钮?',
      confirmText: '关闭',
      confirmColor: '#007AFF',
      cancelText: '取消',
      cancelColor: '#007AFF',
      complete: (res) => {
        if (res.confirm) {
          // 确认关闭
          confirmCallbackFunc();
        } else {
          // 取消关闭
          this.setData({
            'cardInfo.yuehunSwitch': '1'
          });
        }
      }
    })
  },
})